package com.demo.controller;

import com.demo.pojo.User;
import com.demo.service.UserService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpSession;

@Controller
@RequestMapping("/user")
public class UserController {
    /**
     * 得到一个用来记录日志的对象，这样打印信息时能够标记是哪个类的信息
     */
    private static final Log logger = LogFactory.getLog(UserController.class);
    @Autowired
    UserService userService;

    /**
     * 从首页跳转到注册页面
     *
     * @return
     */
    @RequestMapping("/toRegister")
    public String toRegister() {
        return "register";
    }

    /**
     * 从首页跳转到登录页面
     *
     * @return
     */
    @RequestMapping("/toLogin")
    public String toLogin() {
        return "login";
    }

    /**
     * 处理登录
     * 使用User对象 接收登录页面提交的请求参数
     *
     * @return
     */
    @RequestMapping("/login")
    public String login(User user, HttpSession session, Model model) {
        if (userService.login(user)) {
            session.setAttribute("user", user);
            logger.info("登录成功");
            //登陆成功 跳转到main.jsp
            return "main";
        } else {
            logger.info("登录失败");
            model.addAttribute("messageError", "用户名或者密码错误！");
            return "login";
        }
    }

    /**
     * 处理注册
     * 使用@RequestParam注解 将前端参数名和形参名保持一致 联系在一起 接收注册页面提交的请求参数
     *
     * @return
     */
    @RequestMapping("/register")
    public String register(@ModelAttribute("user") User user) {
        if (userService.register(user)) {
            logger.info("注册成功");
            //注册成功 跳转到login.jsp
            //@ModelAttribute("user")和model.addAttribute("user", user);功能相同
//            model.addAttribute("user", user);
            //我们在对应的jsp页面上，通过EL表达式${user.uname}取出ModelAttribute当中user的uname值
            return "login";
        } else {
            logger.info("注册失败");
            return "register";
        }
    }
}
